串口

串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。 串口模块类别中包括了输出函数print()、获取键盘输入函数input()、硬件串口输入输出函数ai_com.uart_rx()、uart1.write()、ai_com.uart_tx()等相应调试接口函数控制语句。

../../_images/serial.png

1.打印自动换行

../../_images/println.png
1
print('Mixly')

1.1 描述

print() 方法用于打印输出,最常见的一个函数。

1.2 范例1

打印输出“Hello Mixly!”,并自动换行。

如:

../../_images/println_example.png

源代码:

1
print('Hello Mixly!')

2.打印

../../_images/print.png

源代码:

1
print('Mixly',end ="")

2.1 描述

打印,不换行。

2.2 参数

end为空时,打印内容不自动换行。

2.3 范例

../../_images/print_example.png

多次打印内容时会显示在同一行。

1
2
print('Hello',end ="")
print('Mixly',end ="")

3.打印结尾于

../../_images/print_with.png

源代码:

1
print('Mixly',end =',')

3.1 描述

打印某项内容,统一以xxx结尾。

3.2 参数

  • ,:结尾内容,可自定义。

3.3 范例

统一以字符串“end”结尾。

../../_images/print_wi.png
1
print('Mixly',end ='end')

4.打印(自动换行)2

../../_images/print_example2.png
1
print('Hello', 'Mixly')

4.1 描述

将两个字符串连接后进行打印并换行,此处输出结果为“Hello Mixly”。

5.接收字符串输入

../../_images/input.png
1
input('请输入:')

5.1 描述

input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。

5.2 范例

输入测试

../../_images/input_example.png
1
2
strr = input('请输入:')
print('输入的内容为:', strr)

程序正常运行情况下

1
2
请输入:Mixly
输入的内容为:Mixly

PS:目前程序好像无法正常输入并接收数据,待完善

6.初始化串口

../../_images/uart.png
1
2
3
4
5
6
import busio
from board import *


uart1 = busio.UART(IO9, IO10, baudrate=115200)
uart1.write(bytearray('Mixly'))

6.1 描述

MixGo CE可初始化出三个串口进行串口通信,分别为:UART1、UART2和 UART3。

6.2 参数

  • IO9, IO10, baudrate=115200 :IO9, IO10分别对应为TX,RX;baudrate是指波特率,表示单位时间内传送的码元符号的个数,它是对符号传输速率的一种度量,常用的值为9600和115200。uart1.write(bytearray(‘’))为串口打印输出函数。
  • 注:TX是发送(transport),RX是接收(receive)。

7.uart1串口打印自动换行

../../_images/uart_w.png
1
2
3
4
5
import busio
from board import *


uart1.write(bytearray('Mixly')+'\r\n')

7.1 描述

uart1.write(bytearray(‘’)+’rn’)方法用于uart1打印输出与其他硬件间进行串口通信,此函数需配合6.串口初始化进行使用;另外这条串口输出内容将不在软件状态栏显示。

7.2 范例

通信打印输出“Hello World”

../../_images/uart_w3.png
1
2
3
4
5
6
7
8
import busio
from board import *


uart1.write(bytearray(oct(0XFF00FF))+'\r\n')

uart1 = busio.UART(IO9, IO10, baudrate=115200)
uart1.write(bytearray('Hello World')+'\r\n')

8. uart1串口打印自动换行2

../../_images/uart_w2.png
1
2
3
4
5
import busio
from board import *


uart1.write(bytearray(hex(0XFF00FF))+'\r\n')

8.1 描述

uart1根据实际应用需要打印输出二、八、十、十六进制数据。

8.2 参数

  • hex()此处为16进制数据转换方法,可替换为bin()二进制数据转换、oct()八进制数据转换、int()十进制数据转换;uart1.write(bytearray(hex())+’rn’)函数同样需要配合6.串口初始化进行使用,范例参见7.2。

9.uart1发送数据至MixGo AI

../../_images/uart_ai.png
1
2
3
4
5
6
7
import busio
from board import *
import ai_com


uart1 = busio.UART(IO9, IO10, baudrate=115200)
ai_com.uart_tx(uart1, code, repeat=1)

9.1 描述

uart1串口发送数据至MixGo AI板专用函数。

9.2 参数

  • uart1为串口实例化对象,code为要发送的数据存储变量名,repeat为是否重复发送某一数据的标记变量,当该值等于1时会重复发送code中的变量值,当为0时,仅当code中数据发生改变时才会被发送一次。
  • 尤其注意code是要发送的数据变量名,需要遵循先定义后使用原则。

9.2 范例

通过uart持续发送数据1至MixGo AI板。

MixGo CE端程序:

../../_images/uart_ai1.png
1
2
3
4
5
6
7
8
import busio
from board import *
import ai_com


code = 1
uart1 = busio.UART(IO9, IO10, baudrate=115200)
ai_com.uart_tx(uart1, code, repeat=1)

MixGo AI端程序:

../../_images/uart_ai2.png
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
from machine import UART
import board
import machine
import ce_com


board.register(7,board.FPIOA.UART1_TX)
board.register(6,board.FPIOA.UART1_RX)
uart1=UART(UART.UART1, 115200, timeout=1000, read_buf_len=4096)
while True:
    接收 = ce_com.uart_rx(uart1)
    if 接收 != None:
        print('接收到:', 接收)

10.读取MixGo AI数据

../../_images/ai_read.png
1
2
3
4
5
6
7
import busio
from board import *
import ai_com


uart1 = busio.UART(IO9, IO10, baudrate=115200)
res = ai_com.uart_rx(uart1)

10.1 描述

MixGo CE从串口1读取MixGo AI数据。

10.2 返回

返回MixGo AI传输过来的数据。

10.3 范例

接收MixGo AI发送过来的数据。

MixGo CE端代码

../../_images/ai_readexample.png
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
import busio
from board import *
import ai_com


uart1 = busio.UART(IO9, IO10, baudrate=115200)
while True:
    res = ai_com.uart_rx(uart1)
    if res != None:
        print('收到:', res)

MixGo AI端代码

../../_images/ai_send.png
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from machine import UART
import board
import time
import machine
import ce_com


board.register(7,board.FPIOA.UART1_TX)
board.register(6,board.FPIOA.UART1_RX)
uart1=UART(UART.UART1, 115200, timeout=1000, read_buf_len=4096)
code = 0
while True:
    time.sleep_ms(1000)
    ce_com.uart_tx(uart1, code, repeat=1)

11.待验证

../../_images/fun.png